package com.dys.test05;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

/**
 * @className: com.dys.test02.ClientTest
 * @description: com.dys.test02
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/21 下午8:53
 */
public class ClientTest {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        // 1.创建套接字：指定服务器的ip和port
        Socket s = null;
        OutputStream os = null;
        ObjectOutputStream oos = null;
        InputStream is = null;
        DataInputStream dis = null;
        try {
            s = new Socket("localhost", 8848);
            // 2.向服务器发送数据-->利用输出流
            os = s.getOutputStream();

            // 3.向服务器发送数据
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入你的账号：");
            String username = sc.next();
            System.out.println("请输入你的密码：");
            String password = sc.next();

            // 将账号和密码封装为一个User对象
            User user = new User(username, password);
            oos = new ObjectOutputStream(os);
            oos.writeObject(user);

            // 接收服务器端的回话--》利用输入流：
            // 接收服务器回复的消息
            is = s.getInputStream();
            dis = new DataInputStream(is);

            boolean b = dis.readBoolean();

            if (b) {
                System.out.println("恭喜你,登录成功!");
            } else {
                System.out.println("账号或者密码错误，登录失败!");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 3.关流+关闭网络资源
            try {
                if (dis != null) {
                    dis.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (is != null) {
                    is.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (oos != null) {
                    oos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (os != null) {
                    os.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (s != null) {
                    s.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}
